1 /* 2 * Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 /* 27 * (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved 28 * (C) Copyright IBM Corp. 1996 - 1998 - All Rights Reserved 29 * 30 * The original version of this source code and documentation 31 * is copyrighted and owned by Taligent, Inc., a wholly-owned 32 * subsidiary of IBM. These materials are provided under terms 33 * of a License Agreement between Taligent and Sun. This technology 34 * is protected by multiple US and International patents. 35 * 36 * This notice and attribution to Taligent may not be removed. 37 * Taligent is a registered trademark of Taligent, Inc. 38 * 39 */ 40 41 package sun.util.resources; 42 43 import java.util.Map; 44 import java.util.LinkedHashMap; 45 46 /** 47 * Subclass of <code>ResourceBundle</code> with special 48 * functionality for time zone names. The additional functionality: 49 * <ul> 50 * <li>Preserves the order of entries in the <code>getContents</code> 51 * array for the enumeration returned by <code>getKeys</code>. 52 * <li>Inserts the time zone ID (the key of the bundle entries) into 53 * the string arrays returned by <code>handleGetObject</code>. 54 * <ul> 55 * All <code>TimeZoneNames</code> resource bundles must extend this 56 * class and implement the <code>getContents</code> method. 57 */ 58 public abstract class TimeZoneNamesBundle extends OpenListResourceBundle { 59 60 /** 61 * Maps time zone IDs to locale-specific names. 62 * The value returned is an array of five strings: 63 * <ul> 64 * <li>The time zone ID (same as the key, not localized). 65 * <li>The long name of the time zone in standard time (localized). 66 * <li>The short name of the time zone in standard time (localized). 67 * <li>The long name of the time zone in daylight savings time (localized). 68 * <li>The short name of the time zone in daylight savings time (localized). 69 * </ul> 70 * The localized names come from the subclasses's 71 * <code>getContents</code> implementations, while the time zone 72 * ID is inserted into the returned array by this method. 73 */ 74 public Object handleGetObject(String key) { 75 String[] contents = (String[]) super.handleGetObject(key); 76 if (contents == null) { 77 return null; 78 } 79 80 int clen = contents.length; 81 String[] tmpobj = new String[clen+1]; 82 tmpobj[0] = key; 83 for (int i = 0; i < clen; i++) { 84 tmpobj[i+1] = contents[i]; 85 } 86 return tmpobj; 87 } 88 89 /** 90 * Use LinkedHashMap to preserve order of bundle entries. 91 */ 92 protected Map createMap(int size) { 93 return new LinkedHashMap(size); 94 } 95 96 /** 97 * Provides key/value mappings for a specific 98 * resource bundle. Each entry of the array 99 * returned must be an array with two elements: 100 * <ul> 101 * <li>The key, which must be a string. 102 * <li>The value, which must be an array of 103 * four strings: 104 * <ul> 105 * <li>The long name of the time zone in standard time. 106 * <li>The short name of the time zone in standard time. 107 * <li>The long name of the time zone in daylight savings time. 108 * <li>The short name of the time zone in daylight savings time. 109 * </ul> 110 * </ul> 111 */ 112 protected abstract Object[][] getContents(); 113 }